草庐IT

Java HotSpot 枚举开销

全部标签

C语言自定义类型——联合和枚举

【本节内容】1.联合体类型的声明2.联合体的特点3.联合体大小的计算4.枚举类型的声明5.枚举类型的优点6.枚举类型的使用1.联合体1.1联合体类型的声明像结构体一样,联合体也是由一个或者多个成员构成,这些成员可以不同的类型。但是编译器只为最大的成员分配足够的内存空间。联合体的特点是所有成员共用同一块内存空间。所以联合体也叫:共用体。给联合体其中⼀个成员赋值,其他成员的值也跟着变化。代码示例: #include//联合类型的声明unionUn{charc;inti;};intmain(){//联合变量的定义unionUnun={0};//计算连个变量的⼤⼩printf("%d\n",sizeo

java - 如何使用基于 JAX-RS 的 ReSTLet 自动将 @DefaultValue 映射到枚举参数?

我有一个网络API,用户可以(也可以不)传输URL参数,例如bird、dog等。我希望将此参数映射到服务器端的枚举,例如:@POST@Path("/zoo")publicResponsecreateNewAnimal(@QueryParam("animal")@DefaultValue("CAT")AnimalTypetype)throwsException...publicenumAnimalType{BIG_BIRD,SMALL_CAT;}但它不起作用!在处理网络请求时,Enum.valueOf()被调用。当然它失败了,因为用户用作URL参数的bird与Enum中的标识符不匹配(A

java - Java 1.6 中的枚举类主体特性

enumCoffeeSize{BIG(8),HUGE(10),OVERWHELMING(16){publicStringgetLidCode(){return"A";}};privateintounces;publicintgetOunces(){returnounces;}CoffeeSize(intounces){this.ounces=ounces;}publicStringgetLidCode(){return"B";}}这是K&B6书中的SCJP1.6问题。这是作为SCJP6的一个特性的常量特定类主体的示例。我如何执行它并查看结果输出?我有两个问题:我的Javamain方法是

Java枚举自动递增条目?

Java是否允许像好的C甚至C#这样的东西,你可以定义一个枚举,其中的字段值自动增长,并从一个可选的给定值开始?例如在C或C#中:enumFoo{A=10,B,C,D=5000,E,Fish};产量A=10,B=11,C=12,D=5000,E=5001,鱼=5002。 最佳答案 在Java中,您根本无法显式指定序数值。它们总是从0开始自动递增,无法控制。如果你想要其他自定义值,你需要将它们放在构造函数调用中并自己存储。您可以获得自动增量,但它实在是太恶心了:importjava.util.EnumSet;//Pleasedon't

java - 检查枚举类型是否包含具有给定名称的常量

我的代码中有多个枚举:publicenumFirst{a,b,c,d;}publicenumSecond{e,f,g;}我希望有一种方法可以使用valueOf()检查值是否存在于任何枚举中,而无需为每种枚举类型编写一个。例如(这段代码不运行):publicbooleanenumTypeContains(Enume,Strings){try{e.valueOf(s);}catch(IllegalArgumentExceptioniae){returnfalse;}returntrue;}用法:enumTypeContains(First,"a");//returnstrueenumTyp

java - 从枚举类型和序号中获取枚举值

publicEdecode(java.lang.reflect.Fieldfield,intordinal){//TODO}假设field.getType().isEnum()为true,我将如何生成给定序数的枚举值? 最佳答案 field.getType().getEnumConstants()[ordinal]足够了。一条线;足够简单。 关于java-从枚举类型和序号中获取枚举值,我们在StackOverflow上找到一个类似的问题: https://st

java - 使用接口(interface)和枚举的潜在类型

我有一个IDevice接口(interface)和这个接口(interface)的两个枚举实现:AndroidDevice和IosDevice。问题是:我想使用潜在类型并在接口(interface)引用上调用values()方法:privateIDevicegetDeviceByReadableName(StringversionInXml,IDevicedevices){for(IDevicedevice:devices.values()){//...所以我必须添加publicIDevice[]values();到我的界面:publicinterfaceIDevice{//...pu

java - 为什么 Java 枚举不可克隆?

现在改变问题为时已晚,但更精确的问题应该是问“为什么clone()不允许单例?”。copy()方法会更方便。有什么理由不能克隆Java中的枚举吗?手册上说Thisguaranteesthatenumsarenevercloned,whichisnecessarytopreservetheir"singleton"status.但是返回实例本身也会保留它的状态,我将能够像处理其他可克隆对象一样处理关联的枚举。有人可能会争辩说Thegeneralintent[ofclone()]isthat,foranyobjectx,theexpression:x.clone()!=xwillbetru

java - 为什么 Java 库更多地使用常量整数而不是枚举?

我不确定这是否是一个明确的声明,但在我看来,JavaAPI更喜欢常量整数而不是枚举。在我使用过的API部分,我遇到了许多finalstaticint常量,其中可以使用enum代替。曾经我此刻正盯着的这样一个例子:来自java.awt.BasicStroke:publicfinalstaticintCAP_BUTT=0;publicfinalstaticintCAP_ROUND=1;publicfinalstaticintCAP_SQUARE=2;事实上,我认为我从未见过在标准JavaAPI类中使用过枚举。这是为什么?我正在为我自己的应用程序设计一个API(大约比JavaAPI小10亿倍

java - 我可以假设 Java 枚举自动递增 1 吗?

Java声明初始值的序数为0。我可以假设当我创建这样的枚举时:publicenumDirection{MONDAY,TUESDAY,WEDNESDAY,THURSDAY,...}TUESDAY的序数总是1,WEDNESDAY的序数总是2,...?我会更具体一点。我正在声明一个枚举:publicenumDirection{UP,RIGHT,DOWN,LEFT}现在有一种方法可以(顺时针)旋转90度。这是带有序号的一行:direction=Direction.values()[direction.ordinal()+1%Direction.values().length];如果我不使用序数